/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.beautycenter.bean;

import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 *
 * @author Romulo
 */

@Entity
@Table(name = "PACOTE_TRATAMENTO")
public class PacoteTratamento implements Serializable{

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name="ID_PACOTE_TRATAMENTO")
    private int idPacote;
    
    @Column(name = "DATA_CRIACAO")
    @Temporal(TemporalType.DATE)
    private Date dataCriacao = new Date();
    
    @Column(name="TOTAL_PACOTE", scale=2)
    private double totalPacote;
    
    @Column(name="TOTAL_PAGO", scale=2)
    private double totalPago = 0;
    
    @Column(name="PAGAMENTO_EFETUADO")
    private boolean pagamentoEfetuado;
    
    
    //relacionamento paciente 1-N pacotes de tratamento
    @ManyToOne
    @JoinColumn(name="ID_CLIENTE", referencedColumnName="ID_PESSOA")
    private Cliente cliente;
    
    //relacionamento pacote de tratamento 1-N sessões
    @OneToMany(mappedBy="pacoteTratamento", cascade=CascadeType.ALL, orphanRemoval=true, fetch=FetchType.LAZY)
    private List<Sessao> listaSessoes;
    
    
    @ManyToOne
    @JoinColumn(name="ID_AGENDA", referencedColumnName="ID_AGENDA")
    private Agenda agenda;
    
    
    
    @ManyToOne
    @JoinColumn(name="ID_DEBITO", referencedColumnName="ID_DEBITO")
    private Debito debito;
    
    
    //relacionamento pacote tratamento 1-N funcionario
    @ManyToOne
    @JoinColumn(name="ID_PESSOA", referencedColumnName="ID_PESSOA")
    private Funcionario funcionario;
    
    
    //ajudará para saber se o pacote ja foi quitado
    @Column(name="QUITADO")
    private boolean quitado;
    
    /**
     * 1 = pacote de tratamento
     * 2 = pilates
     * 3 = laser
     * 4 = avulso
     */
    @Column(name="TIPO_PACOTE")
    private int tipoPacote = 1;
    
    public int getIdPacote() {
        return idPacote;
    }

    public void setIdPacote(int idPacote) {
        this.idPacote = idPacote;
    }

    public double getTotalPacote() {
        return totalPacote;
    }

    public void setTotalPacote(double totalPacote) {
        this.totalPacote = totalPacote;
    }

    public boolean isPagamentoEfetuado() {
        return pagamentoEfetuado;
    }

    public void setPagamentoEfetuado(boolean pagamentoEfetuado) {
        this.pagamentoEfetuado = pagamentoEfetuado;
    }

    public Cliente getCliente() {
        return cliente;
    }

    public void setCliente(Cliente paciente) {
        this.cliente = paciente;
    }

    public Agenda getAgenda() {
        return agenda;
    }

    public void setAgenda(Agenda agenda) {
        this.agenda = agenda;
    }

    public Debito getDebito() {
        return debito;
    }

    public void setDebito(Debito debito) {
        this.debito = debito;
    }
    
     public List<Sessao> getListaSessoes() {
        return listaSessoes;
    }

    public boolean isQuitado() {
        return quitado;
    }

    public void setQuitado(boolean quitado) {
        this.quitado = quitado;
    }

 
    public Funcionario getFuncionario() {
        return funcionario;
    }
    
    /**
     * @param funcionario the funcionario to set
     */
    public void setFuncionario(Funcionario funcionario) {
        this.funcionario = funcionario;
    }
    
    public double getTotalPago() {
        return totalPago;
    }

    public void setTotalPago(double totalPago) {
        this.totalPago = totalPago;
    }

    public int getTipoPacote() {
        return tipoPacote;
    }

    public void setTipoPacote(int tipoPacote) {
        this.tipoPacote = tipoPacote;
    }

    public Date getDataCriacao() {
        return dataCriacao;
    }

    public void setDataCriacao(Date dataCriacao) {
        this.dataCriacao = dataCriacao;
    }
}